package com.me.test.threadpool.xly;

import java.util.Queue;

/**
 * 工作线程
 * @author XuLiangYong
 * Jul 20, 2007 3:47:52 PM
 */
public class WorkThread extends Thread{
	private boolean shutdown = false;
	private Queue<Task> queue;
	
	public WorkThread(Queue<Task> queue){
		this.queue = queue;
	}
	
	public void run(){
		while(!shutdown){
			synchronized(queue){ //获得对象锁 禁止其他线程访问
				if(!queue.isEmpty()){
					//处理任务 
					Task task = queue.poll();
					task.execute();
				}else{
					try {
						queue.wait(); //释放锁 线程处于阻赛状态 等待notify唤醒
					} catch (InterruptedException e) {
					}
				}
			}
		}//end while
	}
	
	/**
	 * 调用该方法后不一定会立即结束线程， 只有在线程处于运行状态且处理完当前任务后才结束
	 */
	public void shutdown(){
		shutdown = true;
	}
}